import { defineStore } from 'pinia'
import { ref, computed } from 'vue'

/**
 * 用户信息接口
 */
export interface UserInfo {
  id: number
  username: string
  realName: string
  phone: string
  email: string
  createTime: string
}

/**
 * 用户状态管理Store
 * 管理当前登录用户的认证状态和用户信息
 */
export const useUserStore = defineStore('user', () => {
  // 当前用户信息
  const userInfo = ref<UserInfo | null>(null)
  
  // 是否已登录
  const isLoggedIn = computed(() => userInfo.value !== null)
  
  // 用户ID
  const userId = computed(() => userInfo.value?.id || 0)
  
  /**
   * 设置用户信息
   * @param user 用户信息
   */
  const setUserInfo = (user: UserInfo) => {
    userInfo.value = user
    // 保存到本地存储
    localStorage.setItem('userInfo', JSON.stringify(user))
    localStorage.setItem('isLoggedIn', 'true') // 添加登录状态标记
  }
  
  /**
   * 获取用户信息
   */
  const getUserInfo = (): UserInfo | null => {
    if (!userInfo.value) {
      const stored = localStorage.getItem('userInfo')
      if (stored) {
        try {
          userInfo.value = JSON.parse(stored)
        } catch (error) {
          console.error('解析用户信息失败:', error)
          localStorage.removeItem('userInfo')
        }
      }
    }
    return userInfo.value
  }
  
  /**
   * 清除用户信息（登出）
   */
  const clearUserInfo = () => {
    userInfo.value = null
    localStorage.removeItem('userInfo')
    localStorage.removeItem('isLoggedIn') // 清除登录状态标记
  }
  
  /**
   * 初始化用户信息（页面加载时调用）
   */
  const initUserInfo = () => {
    getUserInfo()
  }
  
  return {
    userInfo,
    isLoggedIn,
    userId,
    setUserInfo,
    getUserInfo,
    clearUserInfo,
    initUserInfo
  }
})